class Student:  # 类名一个或多个单词组成，首字母大写
    native_place = "吉林"  # 直接写在类里的变量，称为类属性

    # init初始化方法
    def __init__(self, name, age):
        self.name = name  # self.name 称为实体属性， 进行了一个赋值的操作，将局部变量name的值赋给实体属性
        self.age = age

    # 实例方法
    def eat(self):
        print("学生在吃饭")

    # 静态方法
    @staticmethod
    def method():
        print("我使用了staticmethod进行修饰，所以我是静态方法")

    # 类方法
    @classmethod
    def cm(cls):
        print("我使用了classmate进行修饰，所以我是类方法")


# 在类之外定义的称为函数，在类之内定义的称为方法
def drink():
    print("喝水")


# 创建Student类的对象
stu1 = Student("张三", 20)
print(id(stu1))
print(type(stu1))
print(stu1)
print(Student)
print(type(Student))


stu1.eat()  # 调用方法和属性   对象名.方法名()
print(stu1.name)
print(stu1.age)


Student.eat(stu1)   # 与38行相同都是调用Student中的eat方法   类名.方法名(类的对象)   实际上就是方法定义处的self
